\chapter{Архитектура приложения}

Django~--- это свободный фреймворк для веб-приложений на языке Python. Он значительно облегчает и ускоряет разработку любых приложений, помогает выстраивать простую и гибкую архитектуру. На рисунке \ref{pic:django} изображён способ общения с пользователем.

\begin{figure}[ht]
\centering
\includegraphics[width=0.8\linewidth]{res/pic/django}
\caption{Архитектура приложения}
\label{pic:django}
\end{figure}

Видно, что сначала HTTP-запрос обрабатывает веб-сервер, который перенаправляет его на обработку приложению на Python. Далее по URL запроса специальный диспетчер URL-ов выбирает соответствующую функцию view. Эта функция генерирует HTML-документ из специального шаблона и возвращает ответ пользователю. Для оформления используются CSS, которые отдаются пользователю как статический контент.

Работа с базой данных осуществляется с помощью встроенной ORM, однако достаточно сложные запросы, которые невозможно выполнить средствами ORM без потери производительности, реализованы на SQL. Django предоставляет гибкую ORM, которая позволяет легко интегрировать прямые SQL-запросы, разумеется, в ущерб переносимости приложения на другие СУБД. Полный список всех используемых SQL-запросов можно найти в приложении A.
